#!/usr/bin/env python
#-*-coding:utf-8-*-

import CRFPP
import conf

def load_model():
    # modelname.model 路径我发现只能使用相对路径
    tagger = CRFPP.Tagger("-m %s -v 3 -n2"%(conf.SEG_CRF_MODEL_PATH,))
    tagger.clear()
    tagger.add("Confidence NN")
    tagger.add("in IN")
    tagger.add("the DT")
    tagger.add("pound NN")
    tagger.add("is VBZ")
    tagger.add("widely RB")
    tagger.add("expected VBN")
    tagger.add("to TO")
    tagger.add("take VB")
    tagger.add("another DT")
    tagger.add("sharp JJ")
    tagger.add("dive NN")
    tagger.add("if IN")
    tagger.add("trade NN")
    tagger.add("figures NNS")
    tagger.add("for IN")
    tagger.add("September NNP")
    return tagger

def recognise(text, only_words=True):
    """
    sentence unicode
    return list of every word and tag
    """

    print(text)
    tagger = load_model()
    result = tagger.parse("\n".join(list(text)))
    result_list = result.split('\n')
    seg_result = []

    ## chose the first result
    for lin in result_list[1:]:
        lint = lin.split()
        if not len(lin):
            break
        seg_result.append(lint[:3])

    words = []
    seg_result = [[item[0], item[1].split("/")[0]] for item in seg_result]

    tmp = ""
    for item in seg_result:
        # tag = item[1].split("/")[0]
        w = item[0]
        tag = item[1]
        if tag == "S":
            words.append(w)
        elif tag == "B":
            tmp += w
        elif tag == "M":
            tmp += w
        elif tag == "E":
            tmp += w
            words.append(tmp)
            tmp = ""
    return seg_result, words



if __name__ == '__main__':
    text = "岗位职责：1.需求设计与开发工作 2.代码规范、优化 3.细致认真，善于沟通，理解学习能力强  任职资格： 1.Java基础扎实；具有三年以上Java开发经验； 2.精通后端开发相关技术，熟悉spring mvc、mybatis； 3.熟悉java ee规范，熟悉常用设计模式 4.熟悉Linux平台常用命令 5.熟悉数据库技术，Sql优化 6.熟悉大流量，高并发，高性能的分布式系统设计，擅长性能调优 7.擅长系统分析设计，有大型项目基础与应用架构设计经验者优先 "
    text = "刚刚在英国完成大婚的周杰伦，又有新消息传来。不过，不是粉丝们翘首以盼的“昆凌有喜”的信息，而是第四季《中国好声音》公布首位导师，周董确认加盟，成为“好声音”史上第八位导师。"
    seg_result, words = recognise(text, False)
    print(seg_result)
